﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Nirvana
{
    public class PrefabReference
    {
        private GameObject prefab;
        private bool isRefrence;

        //~PrefabReference()
        //{
        //    Dispose(true);
        //}

        //public void SetPrefab(GameObject prefab)
        //{
        //    if (this.prefab == prefab) return;
        //    if (this.prefab != null) //释放旧引用资源计数
        //    {
        //        Dispose(false);
        //    }

        //    this.prefab = prefab;
        //    //此脚本也引用了一份prefab。则计数要+1
        //    Retain();
        //}

        //private void Retain()
        //{
        //    if(this.prefab != null && !this.isRefrence)
        //    {
        //        this.isRefrence = PrefabPool.Instance.Retain(prefab);
        //    }
        //}


        //private void Dispose(bool isDispose = false)
        //{
        //    if (isRefrence && prefab != null)
        //    {
        //        this.isRefrence = false;
        //        if (isDispose) //脚本自毁时，放下一帧去清除引用计数
        //            ReferenceDict.AddNeedClearPrefab(prefab);
        //        else
        //            PrefabPool.Instance.Free(this.prefab, false);
        //        prefab = null;
        //    }
        //}
    }
}

